(ns notebooks.main-talk
(:require [tablecloth.api :as tc]
[tablecloth.api.columns :as tcc]
[scicloj.noj.v1.vis.hanami :as hanami]
[aerial.hanami.templates :as ht]
[tech.v3.datatype.datetime :as datetime]
[tech.v3.datatype.rolling :as rolling]
[tech.v3.datatype.functional :as fun]
[data.generate-dataset]))London Clojurians Talk December 2023
Clean up dataset
(def clojure-repos
(-> "data/1000-repos.edn"
tc/dataset))(def commit-dates
(-> "data/commit-dates-2023-12-05T19:48:16.843-00:00.csv.gz"
(tc/dataset {:key-fn keyword})))Explore the dataset with tablecloth Get column names
(-> clojure-repos
tc/column-names
sort)(:allow_forking
:archive_url
:archived
:assignees_url
:blobs_url
:branches_url
:clone_url
:collaborators_url
:comments_url
:commits_url
:compare_url
:contents_url
:contributors_url
:created_at
:default_branch
:deployments_url
:description
:disabled
:downloads_url
:events_url
:fork
:forks
:forks_count
:forks_url
:full_name
:git_commits_url
:git_refs_url
:git_tags_url
:git_url
:has_discussions
:has_downloads
:has_issues
:has_pages
:has_projects
:has_wiki
:homepage
:hooks_url
:html_url
:id
:is_template
:issue_comment_url
:issue_events_url
:issues_url
:keys_url
:labels_url
:language
:languages_url
:license
:merges_url
:milestones_url
:mirror_url
:name
:node_id
:notifications_url
:open_issues
:open_issues_count
:owner
:permissions
:private
:pulls_url
:pushed_at
:releases_url
:score
:size
:ssh_url
:stargazers_count
:stargazers_url
:statuses_url
:subscribers_url
:subscription_url
:svn_url
:tags_url
:teams_url
:topics
:trees_url
:updated_at
:url
:visibility
:watchers
:watchers_count
:web_commit_signoff_required)Narrow it down to ones we care about
(tc/select-columns clojure-repos [:full_name :owner :watchers_count :created_at])data/1000-repos.edn [1000 4]:
| :full_name | :owner | :watchers_count | :created_at |
|---|---|---|---|
| tonsky/FiraCode | {:html_url https://github.com/tonsky, | 73534 | 2014-11-11T19:32:38Z |
| :gravatar_id , | |||
| :followers_url https://api.github.com/users/tonsky/followers, | |||
| :subscriptions_url https://api.github.com/users/tonsky/subscriptions, | |||
| :site_admin false, | |||
| :following_url | |||
| https://api.github.com/users/tonsky/following{/other_user}, | |||
| :node_id MDQ6VXNlcjI4NTI5Mg==, | |||
| :type User, | |||
| :received_events_url | |||
| https://api.github.com/users/tonsky/received_events, | |||
| :login tonsky, | |||
| :organizations_url https://api.github.com/users/tonsky/orgs, | |||
| :id 285292, | |||
| :events_url https://api.github.com/users/tonsky/events{/privacy}, | |||
| :url https://api.github.com/users/tonsky, | |||
| :repos_url https://api.github.com/users/tonsky/repos, | |||
| :starred_url | |||
| https://api.github.com/users/tonsky/starred{/owner}{/repo}, | |||
| :gists_url https://api.github.com/users/tonsky/gists{/gist_id}, | |||
| :avatar_url https://avatars.githubusercontent.com/u/285292?v=4} | |||
| metabase/metabase | {:html_url https://github.com/metabase, | 35041 | 2015-02-02T19:25:47Z |
| :gravatar_id , | |||
| :followers_url https://api.github.com/users/metabase/followers, | |||
| :subscriptions_url | |||
| https://api.github.com/users/metabase/subscriptions, | |||
| :site_admin false, | |||
| :following_url | |||
| https://api.github.com/users/metabase/following{/other_user}, | |||
| :node_id MDEyOk9yZ2FuaXphdGlvbjEwNTIwNjI5, | |||
| :type Organization, | |||
| :received_events_url | |||
| https://api.github.com/users/metabase/received_events, | |||
| :login metabase, | |||
| :organizations_url https://api.github.com/users/metabase/orgs, | |||
| :id 10520629, | |||
| :events_url https://api.github.com/users/metabase/events{/privacy}, | |||
| :url https://api.github.com/users/metabase, | |||
| :repos_url https://api.github.com/users/metabase/repos, | |||
| :starred_url | |||
| https://api.github.com/users/metabase/starred{/owner}{/repo}, | |||
| :gists_url https://api.github.com/users/metabase/gists{/gist_id}, | |||
| :avatar_url https://avatars.githubusercontent.com/u/10520629?v=4} | |||
| logseq/logseq | {:html_url https://github.com/logseq, | 26832 | 2020-05-23T00:06:06Z |
| :gravatar_id , | |||
| :followers_url https://api.github.com/users/logseq/followers, | |||
| :subscriptions_url https://api.github.com/users/logseq/subscriptions, | |||
| :site_admin false, | |||
| :following_url | |||
| https://api.github.com/users/logseq/following{/other_user}, | |||
| :node_id MDEyOk9yZ2FuaXphdGlvbjYzMzg1Mjg5, | |||
| :type Organization, | |||
| :received_events_url | |||
| https://api.github.com/users/logseq/received_events, | |||
| :login logseq, | |||
| :organizations_url https://api.github.com/users/logseq/orgs, | |||
| :id 63385289, | |||
| :events_url https://api.github.com/users/logseq/events{/privacy}, | |||
| :url https://api.github.com/users/logseq, | |||
| :repos_url https://api.github.com/users/logseq/repos, | |||
| :starred_url | |||
| https://api.github.com/users/logseq/starred{/owner}{/repo}, | |||
| :gists_url https://api.github.com/users/logseq/gists{/gist_id}, | |||
| :avatar_url https://avatars.githubusercontent.com/u/63385289?v=4} | |||
| penpot/penpot | {:html_url https://github.com/penpot, | 24396 | 2015-12-29T22:09:07Z |
| :gravatar_id , | |||
| :followers_url https://api.github.com/users/penpot/followers, | |||
| :subscriptions_url https://api.github.com/users/penpot/subscriptions, | |||
| :site_admin false, | |||
| :following_url | |||
| https://api.github.com/users/penpot/following{/other_user}, | |||
| :node_id MDEyOk9yZ2FuaXphdGlvbjMwMTc5NjQ0, | |||
| :type Organization, | |||
| :received_events_url | |||
| https://api.github.com/users/penpot/received_events, | |||
| :login penpot, | |||
| :organizations_url https://api.github.com/users/penpot/orgs, | |||
| :id 30179644, | |||
| :events_url https://api.github.com/users/penpot/events{/privacy}, | |||
| :url https://api.github.com/users/penpot, | |||
| :repos_url https://api.github.com/users/penpot/repos, | |||
| :starred_url | |||
| https://api.github.com/users/penpot/starred{/owner}{/repo}, | |||
| :gists_url https://api.github.com/users/penpot/gists{/gist_id}, | |||
| :avatar_url https://avatars.githubusercontent.com/u/30179644?v=4} | |||
| LightTable/LightTable | {:html_url https://github.com/LightTable, | 11732 | 2012-06-27T22:32:43Z |
| :gravatar_id , | |||
| :followers_url https://api.github.com/users/LightTable/followers, | |||
| :subscriptions_url | |||
| https://api.github.com/users/LightTable/subscriptions, | |||
| :site_admin false, | |||
| :following_url | |||
| https://api.github.com/users/LightTable/following{/other_user}, | |||
| :node_id MDEyOk9yZ2FuaXphdGlvbjU4NzcwMTA=, | |||
| :type Organization, | |||
| :received_events_url | |||
| https://api.github.com/users/LightTable/received_events, | |||
| :login LightTable, | |||
| :organizations_url https://api.github.com/users/LightTable/orgs, | |||
| :id 5877010, | |||
| :events_url https://api.github.com/users/LightTable/events{/privacy}, | |||
| :url https://api.github.com/users/LightTable, | |||
| :repos_url https://api.github.com/users/LightTable/repos, | |||
| :starred_url | |||
| https://api.github.com/users/LightTable/starred{/owner}{/repo}, | |||
| :gists_url https://api.github.com/users/LightTable/gists{/gist_id}, | |||
| :avatar_url https://avatars.githubusercontent.com/u/5877010?v=4} | |||
| clojure/clojurescript | {:html_url https://github.com/clojure, | 9145 | 2011-07-20T23:29:13Z |
| :gravatar_id , | |||
| :followers_url https://api.github.com/users/clojure/followers, | |||
| :subscriptions_url https://api.github.com/users/clojure/subscriptions, | |||
| :site_admin false, | |||
| :following_url | |||
| https://api.github.com/users/clojure/following{/other_user}, | |||
| :node_id MDEyOk9yZ2FuaXphdGlvbjMxNzg3NQ==, | |||
| :type Organization, | |||
| :received_events_url | |||
| https://api.github.com/users/clojure/received_events, | |||
| :login clojure, | |||
| :organizations_url https://api.github.com/users/clojure/orgs, | |||
| :id 317875, | |||
| :events_url https://api.github.com/users/clojure/events{/privacy}, | |||
| :url https://api.github.com/users/clojure, | |||
| :repos_url https://api.github.com/users/clojure/repos, | |||
| :starred_url | |||
| https://api.github.com/users/clojure/starred{/owner}{/repo}, | |||
| :gists_url https://api.github.com/users/clojure/gists{/gist_id}, | |||
| :avatar_url https://avatars.githubusercontent.com/u/317875?v=4} | |||
| technomancy/leiningen | {:html_url https://github.com/technomancy, | 7304 | 2009-11-01T05:50:07Z |
| :gravatar_id , | |||
| :followers_url https://api.github.com/users/technomancy/followers, | |||
| :subscriptions_url | |||
| https://api.github.com/users/technomancy/subscriptions, | |||
| :site_admin false, | |||
| :following_url | |||
| https://api.github.com/users/technomancy/following{/other_user}, | |||
| :node_id MDQ6VXNlcjE0MQ==, | |||
| :type User, | |||
| :received_events_url | |||
| https://api.github.com/users/technomancy/received_events, | |||
| :login technomancy, | |||
| :organizations_url https://api.github.com/users/technomancy/orgs, | |||
| :id 141, | |||
| :events_url https://api.github.com/users/technomancy/events{/privacy}, | |||
| :url https://api.github.com/users/technomancy, | |||
| :repos_url https://api.github.com/users/technomancy/repos, | |||
| :starred_url | |||
| https://api.github.com/users/technomancy/starred{/owner}{/repo}, | |||
| :gists_url https://api.github.com/users/technomancy/gists{/gist_id}, | |||
| :avatar_url https://avatars.githubusercontent.com/u/141?v=4} | |||
| omcljs/om | {:html_url https://github.com/omcljs, | 6661 | 2013-12-11T18:18:11Z |
| :gravatar_id , | |||
| :followers_url https://api.github.com/users/omcljs/followers, | |||
| :subscriptions_url https://api.github.com/users/omcljs/subscriptions, | |||
| :site_admin false, | |||
| :following_url | |||
| https://api.github.com/users/omcljs/following{/other_user}, | |||
| :node_id MDEyOk9yZ2FuaXphdGlvbjEwODIyMTE1, | |||
| :type Organization, | |||
| :received_events_url | |||
| https://api.github.com/users/omcljs/received_events, | |||
| :login omcljs, | |||
| :organizations_url https://api.github.com/users/omcljs/orgs, | |||
| :id 10822115, | |||
| :events_url https://api.github.com/users/omcljs/events{/privacy}, | |||
| :url https://api.github.com/users/omcljs, | |||
| :repos_url https://api.github.com/users/omcljs/repos, | |||
| :starred_url | |||
| https://api.github.com/users/omcljs/starred{/owner}{/repo}, | |||
| :gists_url https://api.github.com/users/omcljs/gists{/gist_id}, | |||
| :avatar_url https://avatars.githubusercontent.com/u/10822115?v=4} | |||
| jepsen-io/jepsen | {:html_url https://github.com/jepsen-io, | 6386 | 2013-04-14T19:20:27Z |
| :gravatar_id , | |||
| :followers_url https://api.github.com/users/jepsen-io/followers, | |||
| :subscriptions_url | |||
| https://api.github.com/users/jepsen-io/subscriptions, | |||
| :site_admin false, | |||
| :following_url | |||
| https://api.github.com/users/jepsen-io/following{/other_user}, | |||
| :node_id MDEyOk9yZ2FuaXphdGlvbjE5MzM0NDAz, | |||
| :type Organization, | |||
| :received_events_url | |||
| https://api.github.com/users/jepsen-io/received_events, | |||
| :login jepsen-io, | |||
| :organizations_url https://api.github.com/users/jepsen-io/orgs, | |||
| :id 19334403, | |||
| :events_url https://api.github.com/users/jepsen-io/events{/privacy}, | |||
| :url https://api.github.com/users/jepsen-io, | |||
| :repos_url https://api.github.com/users/jepsen-io/repos, | |||
| :starred_url | |||
| https://api.github.com/users/jepsen-io/starred{/owner}{/repo}, | |||
| :gists_url https://api.github.com/users/jepsen-io/gists{/gist_id}, | |||
| :avatar_url https://avatars.githubusercontent.com/u/19334403?v=4} | |||
| athensresearch/athens | {:html_url https://github.com/athensresearch, | 6331 | 2020-03-31T01:29:41Z |
| :gravatar_id , | |||
| :followers_url https://api.github.com/users/athensresearch/followers, | |||
| :subscriptions_url | |||
| https://api.github.com/users/athensresearch/subscriptions, | |||
| :site_admin false, | |||
| :following_url | |||
| https://api.github.com/users/athensresearch/following{/other_user}, | |||
| :node_id MDEyOk9yZ2FuaXphdGlvbjY0MzcxMTcy, | |||
| :type Organization, | |||
| :received_events_url | |||
| https://api.github.com/users/athensresearch/received_events, | |||
| :login athensresearch, | |||
| :organizations_url https://api.github.com/users/athensresearch/orgs, | |||
| :id 64371172, | |||
| :events_url | |||
| https://api.github.com/users/athensresearch/events{/privacy}, | |||
| :url https://api.github.com/users/athensresearch, | |||
| :repos_url https://api.github.com/users/athensresearch/repos, | |||
| :starred_url | |||
| https://api.github.com/users/athensresearch/starred{/owner}{/repo}, | |||
| :gists_url | |||
| https://api.github.com/users/athensresearch/gists{/gist_id}, | |||
| :avatar_url https://avatars.githubusercontent.com/u/64371172?v=4} | |||
| … | … | … | … |
| turbopape/scheje | {:html_url https://github.com/turbopape, | 140 | 2015-12-11T16:27:29Z |
| :gravatar_id , | |||
| :followers_url https://api.github.com/users/turbopape/followers, | |||
| :subscriptions_url | |||
| https://api.github.com/users/turbopape/subscriptions, | |||
| :site_admin false, | |||
| :following_url | |||
| https://api.github.com/users/turbopape/following{/other_user}, | |||
| :node_id MDQ6VXNlcjI3NzkxNjc=, | |||
| :type User, | |||
| :received_events_url | |||
| https://api.github.com/users/turbopape/received_events, | |||
| :login turbopape, | |||
| :organizations_url https://api.github.com/users/turbopape/orgs, | |||
| :id 2779167, | |||
| :events_url https://api.github.com/users/turbopape/events{/privacy}, | |||
| :url https://api.github.com/users/turbopape, | |||
| :repos_url https://api.github.com/users/turbopape/repos, | |||
| :starred_url | |||
| https://api.github.com/users/turbopape/starred{/owner}{/repo}, | |||
| :gists_url https://api.github.com/users/turbopape/gists{/gist_id}, | |||
| :avatar_url https://avatars.githubusercontent.com/u/2779167?v=4} | |||
| AbhinavOmprakash/luna | {:html_url https://github.com/AbhinavOmprakash, | 140 | 2021-10-16T11:52:25Z |
| :gravatar_id , | |||
| :followers_url | |||
| https://api.github.com/users/AbhinavOmprakash/followers, | |||
| :subscriptions_url | |||
| https://api.github.com/users/AbhinavOmprakash/subscriptions, | |||
| :site_admin false, | |||
| :following_url | |||
| https://api.github.com/users/AbhinavOmprakash/following{/other_user}, | |||
| :node_id MDQ6VXNlcjU1ODgwMjYw, | |||
| :type User, | |||
| :received_events_url | |||
| https://api.github.com/users/AbhinavOmprakash/received_events, | |||
| :login AbhinavOmprakash, | |||
| :organizations_url https://api.github.com/users/AbhinavOmprakash/orgs, | |||
| :id 55880260, | |||
| :events_url | |||
| https://api.github.com/users/AbhinavOmprakash/events{/privacy}, | |||
| :url https://api.github.com/users/AbhinavOmprakash, | |||
| :repos_url https://api.github.com/users/AbhinavOmprakash/repos, | |||
| :starred_url | |||
| https://api.github.com/users/AbhinavOmprakash/starred{/owner}{/repo}, | |||
| :gists_url | |||
| https://api.github.com/users/AbhinavOmprakash/gists{/gist_id}, | |||
| :avatar_url https://avatars.githubusercontent.com/u/55880260?v=4} | |||
| mischov/reaver | {:html_url https://github.com/mischov, | 139 | 2014-12-09T19:23:30Z |
| :gravatar_id , | |||
| :followers_url https://api.github.com/users/mischov/followers, | |||
| :subscriptions_url https://api.github.com/users/mischov/subscriptions, | |||
| :site_admin false, | |||
| :following_url | |||
| https://api.github.com/users/mischov/following{/other_user}, | |||
| :node_id MDQ6VXNlcjE2MzQ2MzI=, | |||
| :type User, | |||
| :received_events_url | |||
| https://api.github.com/users/mischov/received_events, | |||
| :login mischov, | |||
| :organizations_url https://api.github.com/users/mischov/orgs, | |||
| :id 1634632, | |||
| :events_url https://api.github.com/users/mischov/events{/privacy}, | |||
| :url https://api.github.com/users/mischov, | |||
| :repos_url https://api.github.com/users/mischov/repos, | |||
| :starred_url | |||
| https://api.github.com/users/mischov/starred{/owner}{/repo}, | |||
| :gists_url https://api.github.com/users/mischov/gists{/gist_id}, | |||
| :avatar_url https://avatars.githubusercontent.com/u/1634632?v=4} | |||
| markus-wa/cq | {:html_url https://github.com/markus-wa, | 139 | 2021-03-19T17:28:04Z |
| :gravatar_id , | |||
| :followers_url https://api.github.com/users/markus-wa/followers, | |||
| :subscriptions_url | |||
| https://api.github.com/users/markus-wa/subscriptions, | |||
| :site_admin false, | |||
| :following_url | |||
| https://api.github.com/users/markus-wa/following{/other_user}, | |||
| :node_id MDQ6VXNlcjUxMzgzMTY=, | |||
| :type User, | |||
| :received_events_url | |||
| https://api.github.com/users/markus-wa/received_events, | |||
| :login markus-wa, | |||
| :organizations_url https://api.github.com/users/markus-wa/orgs, | |||
| :id 5138316, | |||
| :events_url https://api.github.com/users/markus-wa/events{/privacy}, | |||
| :url https://api.github.com/users/markus-wa, | |||
| :repos_url https://api.github.com/users/markus-wa/repos, | |||
| :starred_url | |||
| https://api.github.com/users/markus-wa/starred{/owner}{/repo}, | |||
| :gists_url https://api.github.com/users/markus-wa/gists{/gist_id}, | |||
| :avatar_url https://avatars.githubusercontent.com/u/5138316?v=4} | |||
| tonsky/grumpy | {:html_url https://github.com/tonsky, | 139 | 2017-08-30T19:03:33Z |
| :gravatar_id , | |||
| :followers_url https://api.github.com/users/tonsky/followers, | |||
| :subscriptions_url https://api.github.com/users/tonsky/subscriptions, | |||
| :site_admin false, | |||
| :following_url | |||
| https://api.github.com/users/tonsky/following{/other_user}, | |||
| :node_id MDQ6VXNlcjI4NTI5Mg==, | |||
| :type User, | |||
| :received_events_url | |||
| https://api.github.com/users/tonsky/received_events, | |||
| :login tonsky, | |||
| :organizations_url https://api.github.com/users/tonsky/orgs, | |||
| :id 285292, | |||
| :events_url https://api.github.com/users/tonsky/events{/privacy}, | |||
| :url https://api.github.com/users/tonsky, | |||
| :repos_url https://api.github.com/users/tonsky/repos, | |||
| :starred_url | |||
| https://api.github.com/users/tonsky/starred{/owner}{/repo}, | |||
| :gists_url https://api.github.com/users/tonsky/gists{/gist_id}, | |||
| :avatar_url https://avatars.githubusercontent.com/u/285292?v=4} | |||
| logseq/publish-spa | {:html_url https://github.com/logseq, | 139 | 2023-04-12T19:38:52Z |
| :gravatar_id , | |||
| :followers_url https://api.github.com/users/logseq/followers, | |||
| :subscriptions_url https://api.github.com/users/logseq/subscriptions, | |||
| :site_admin false, | |||
| :following_url | |||
| https://api.github.com/users/logseq/following{/other_user}, | |||
| :node_id MDEyOk9yZ2FuaXphdGlvbjYzMzg1Mjg5, | |||
| :type Organization, | |||
| :received_events_url | |||
| https://api.github.com/users/logseq/received_events, | |||
| :login logseq, | |||
| :organizations_url https://api.github.com/users/logseq/orgs, | |||
| :id 63385289, | |||
| :events_url https://api.github.com/users/logseq/events{/privacy}, | |||
| :url https://api.github.com/users/logseq, | |||
| :repos_url https://api.github.com/users/logseq/repos, | |||
| :starred_url | |||
| https://api.github.com/users/logseq/starred{/owner}{/repo}, | |||
| :gists_url https://api.github.com/users/logseq/gists{/gist_id}, | |||
| :avatar_url https://avatars.githubusercontent.com/u/63385289?v=4} | |||
| jasonjckn/llvm-clojure-bindings | {:html_url https://github.com/jasonjckn, | 139 | 2011-06-14T07:45:20Z |
| :gravatar_id , | |||
| :followers_url https://api.github.com/users/jasonjckn/followers, | |||
| :subscriptions_url | |||
| https://api.github.com/users/jasonjckn/subscriptions, | |||
| :site_admin false, | |||
| :following_url | |||
| https://api.github.com/users/jasonjckn/following{/other_user}, | |||
| :node_id MDQ6VXNlcjU1MDgzOQ==, | |||
| :type User, | |||
| :received_events_url | |||
| https://api.github.com/users/jasonjckn/received_events, | |||
| :login jasonjckn, | |||
| :organizations_url https://api.github.com/users/jasonjckn/orgs, | |||
| :id 550839, | |||
| :events_url https://api.github.com/users/jasonjckn/events{/privacy}, | |||
| :url https://api.github.com/users/jasonjckn, | |||
| :repos_url https://api.github.com/users/jasonjckn/repos, | |||
| :starred_url | |||
| https://api.github.com/users/jasonjckn/starred{/owner}{/repo}, | |||
| :gists_url https://api.github.com/users/jasonjckn/gists{/gist_id}, | |||
| :avatar_url https://avatars.githubusercontent.com/u/550839?v=4} | |||
| weavejester/brutha | {:html_url https://github.com/weavejester, | 139 | 2015-04-25T20:38:59Z |
| :gravatar_id , | |||
| :followers_url https://api.github.com/users/weavejester/followers, | |||
| :subscriptions_url | |||
| https://api.github.com/users/weavejester/subscriptions, | |||
| :site_admin false, | |||
| :following_url | |||
| https://api.github.com/users/weavejester/following{/other_user}, | |||
| :node_id MDQ6VXNlcjg3ODA=, | |||
| :type User, | |||
| :received_events_url | |||
| https://api.github.com/users/weavejester/received_events, | |||
| :login weavejester, | |||
| :organizations_url https://api.github.com/users/weavejester/orgs, | |||
| :id 8780, | |||
| :events_url https://api.github.com/users/weavejester/events{/privacy}, | |||
| :url https://api.github.com/users/weavejester, | |||
| :repos_url https://api.github.com/users/weavejester/repos, | |||
| :starred_url | |||
| https://api.github.com/users/weavejester/starred{/owner}{/repo}, | |||
| :gists_url https://api.github.com/users/weavejester/gists{/gist_id}, | |||
| :avatar_url https://avatars.githubusercontent.com/u/8780?v=4} | |||
| juliangamble/clojure-ants-simulation | {:html_url https://github.com/juliangamble, | 138 | 2011-12-28T11:33:41Z |
| :gravatar_id , | |||
| :followers_url https://api.github.com/users/juliangamble/followers, | |||
| :subscriptions_url | |||
| https://api.github.com/users/juliangamble/subscriptions, | |||
| :site_admin false, | |||
| :following_url | |||
| https://api.github.com/users/juliangamble/following{/other_user}, | |||
| :node_id MDQ6VXNlcjI2MTYxNg==, | |||
| :type User, | |||
| :received_events_url | |||
| https://api.github.com/users/juliangamble/received_events, | |||
| :login juliangamble, | |||
| :organizations_url https://api.github.com/users/juliangamble/orgs, | |||
| :id 261616, | |||
| :events_url | |||
| https://api.github.com/users/juliangamble/events{/privacy}, | |||
| :url https://api.github.com/users/juliangamble, | |||
| :repos_url https://api.github.com/users/juliangamble/repos, | |||
| :starred_url | |||
| https://api.github.com/users/juliangamble/starred{/owner}{/repo}, | |||
| :gists_url https://api.github.com/users/juliangamble/gists{/gist_id}, | |||
| :avatar_url https://avatars.githubusercontent.com/u/261616?v=4} | |||
| oliyh/re-learn | {:html_url https://github.com/oliyh, | 138 | 2016-09-26T07:37:55Z |
| :gravatar_id , | |||
| :followers_url https://api.github.com/users/oliyh/followers, | |||
| :subscriptions_url https://api.github.com/users/oliyh/subscriptions, | |||
| :site_admin false, | |||
| :following_url | |||
| https://api.github.com/users/oliyh/following{/other_user}, | |||
| :node_id MDQ6VXNlcjIwNTI4MzU=, | |||
| :type User, | |||
| :received_events_url | |||
| https://api.github.com/users/oliyh/received_events, | |||
| :login oliyh, | |||
| :organizations_url https://api.github.com/users/oliyh/orgs, | |||
| :id 2052835, | |||
| :events_url https://api.github.com/users/oliyh/events{/privacy}, | |||
| :url https://api.github.com/users/oliyh, | |||
| :repos_url https://api.github.com/users/oliyh/repos, | |||
| :starred_url | |||
| https://api.github.com/users/oliyh/starred{/owner}{/repo}, | |||
| :gists_url https://api.github.com/users/oliyh/gists{/gist_id}, | |||
| :avatar_url https://avatars.githubusercontent.com/u/2052835?v=4} | |||
| nakkaya/clodiuno | {:html_url https://github.com/nakkaya, | 138 | 2010-01-02T04:59:08Z |
| :gravatar_id , | |||
| :followers_url https://api.github.com/users/nakkaya/followers, | |||
| :subscriptions_url https://api.github.com/users/nakkaya/subscriptions, | |||
| :site_admin false, | |||
| :following_url | |||
| https://api.github.com/users/nakkaya/following{/other_user}, | |||
| :node_id MDQ6VXNlcjg4NDk5, | |||
| :type User, | |||
| :received_events_url | |||
| https://api.github.com/users/nakkaya/received_events, | |||
| :login nakkaya, | |||
| :organizations_url https://api.github.com/users/nakkaya/orgs, | |||
| :id 88499, | |||
| :events_url https://api.github.com/users/nakkaya/events{/privacy}, | |||
| :url https://api.github.com/users/nakkaya, | |||
| :repos_url https://api.github.com/users/nakkaya/repos, | |||
| :starred_url | |||
| https://api.github.com/users/nakkaya/starred{/owner}{/repo}, | |||
| :gists_url https://api.github.com/users/nakkaya/gists{/gist_id}, | |||
| :avatar_url https://avatars.githubusercontent.com/u/88499?v=4} |
Owners are their whole own things.. too much information inspect one
(-> clojure-repos (tc/select-rows 0) :owner)#tech.v3.dataset.column<persistent-map>[1]
:owner
[{:html_url "https://github.com/tonsky", :gravatar_id "", :followers_url "https://api.github.com/users/tonsky/followers", :subscriptions_url "https://api.github.com/users/tonsky/subscriptions", :site_admin false, :following_url "https://api.github.com/users/tonsky/following{/other_user}", :node_id "MDQ6VXNlcjI4NTI5Mg==", :type "User", :received_events_url "https://api.github.com/users/tonsky/received_events", :login "tonsky", :organizations_url "https://api.github.com/users/tonsky/orgs", :id 285292, :events_url "https://api.github.com/users/tonsky/events{/privacy}", :url "https://api.github.com/users/tonsky", :repos_url "https://api.github.com/users/tonsky/repos", :starred_url "https://api.github.com/users/tonsky/starred{/owner}{/repo}", :gists_url "https://api.github.com/users/tonsky/gists{/gist_id}", :avatar_url "https://avatars.githubusercontent.com/u/285292?v=4"}](-> clojure-repos (tc/select-rows 0) :owner first :login)"tonsky"(def smaller-clojure-repos
(-> clojure-repos
(tc/map-columns :owner_handle [:owner] :login)
(tc/select-columns [:html_url
:full_name
:owner_handle
:watchers_count
:created_at])
))(hanami/plot clojure-repos
ht/point-chart
{:X :created_at
:XTYPE "temporal"
:Y :watchers_count})Group repos by owner
(-> smaller-clojure-repos
(tc/group-by [:owner_handle])
(tc/aggregate {:repos_count tc/row-count})
(tc/order-by :repos_count [:desc]))_unnamed [579 2]:
| :owner_handle | :repos_count |
|---|---|
| clojure | 30 |
| clj-commons | 26 |
| weavejester | 22 |
| oakes | 13 |
| metosin | 12 |
| taoensso | 11 |
| juxt | 10 |
| babashka | 9 |
| swannodette | 9 |
| tonsky | 8 |
| … | … |
| ingesolvoll | 1 |
| jsa-aerial | 1 |
| hashobject | 1 |
| alexander-yakushev | 1 |
| jonromero | 1 |
| l3nz | 1 |
| MastodonC | 1 |
| gcv | 1 |
| kiranshila | 1 |
| gnarroway | 1 |
| yetibot | 1 |
(-> clojure-repos
(tc/map-columns :owner_handle [:owner] :login)
(tc/group-by [:owner_handle])
(tc/aggregate {:total_watchers (fn [ds]
(reduce + (:watchers_count ds)))}))_unnamed [579 2]:
| :owner_handle | :total_watchers |
|---|---|
| tonsky | 80407 |
| metabase | 35614 |
| logseq | 26971 |
| penpot | 24396 |
| LightTable | 11939 |
| clojure | 24382 |
| technomancy | 8263 |
| omcljs | 7069 |
| jepsen-io | 8799 |
| athensresearch | 6331 |
| … | … |
| ftomassetti | 141 |
| digital-dj-tools | 141 |
| prestancedesign | 140 |
| tbatchelli | 140 |
| jclaggett | 140 |
| martintrojer | 140 |
| AbhinavOmprakash | 140 |
| mischov | 139 |
| markus-wa | 139 |
| jasonjckn | 139 |
| juliangamble | 138 |
(-> commit-dates tc/column-names)(:date :language :url)(-> commit-dates
(tc/select-rows )
(tc/group-by [:date])
)_unnamed [0 0]
(def date-counts
(-> commit-dates
(tc/select-rows (->> commit-dates
:date
((partial datetime/long-temporal-field :years))
(map #(>= % 2011))))
(tc/group-by [:date :language])
(tc/aggregate {:n tc/row-count})
(tc/order-by [:date :language])))- Extract relevant data from massive JSON blob
- Clean up data, explain/interpret columns
Basic Analysis
- Discover trends
- Projections
Visualization
Plot/graph the above